package com.tpyule.tpclass.dao;

import com.tpyule.tpclass.entity.bo.*;
import com.tpyule.tpclass.entity.dto.CommonQueryDto;
import com.tpyule.tpclass.entity.dto.StudentQueryDto;
import com.tpyule.tpclass.entity.dto.UserListQueryDto;
import com.tpyule.tpclass.entity.pojo.Approve;
import com.tpyule.tpclass.entity.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author zzz
 * @date 2020/2/20 0020 下午 4:50
 */
@Mapper
public interface UserDao {
    public User getUserByPhoneOrEmail(String str);
    public User getUserById(String userId);
    public void addUser(User user);
    public int updateUser(User user);

    /**
     * 获取新增用户数据
     * @param day
     * @return
     */
    public List<NewUserBo> getNewUser(int day);

    /**
     * 获取用户总数量
     * @return
     * @param dto
     */
    public int getSizeUser(UserListQueryDto dto);

    /**
     * 管理员管理显示用户列表
     * @param dto
     * @return
     */
    public List<UserListBo> getListUser(UserListQueryDto dto);

    /**
     * 教师查询用户列表
     * @param dto
     * @return
     */
    public List<StudentAnaBo> getAnaUser(StudentQueryDto dto);


    /**
     * 教师查询用户列表总量
     * @param dto
     * @return
     */
    public  int getSizeAnaUser(StudentQueryDto dto);

    /**
     * 查询用户详情
     * @param userId
     * @return
     */
    public UserDetailBo getDetailUser(String userId);

    /**
     * 添加认证
     * @param approve
     * @return
     */
    public int addApprove(Approve approve);

    /**
     * 更新认证
     * @param approve
     * @return
     */
    public int updateApprove(Approve approve);

    /**
     * 管理员审批认证
     * @param dto
     * @return
     */
    public List<ApproveListBo> getListApprove(CommonQueryDto dto);


    /**
     * 管理员审批认证数量
     * @return
     */
    public int getSizeApprove();

    /**
     * 获取认证详情
     * @param approveId
     * @return
     */
    public ApproveDetailBo getDetailApprove(int approveId);

    /**
     * 获取认证详情通过UserId
     * @param userId
     * @return
     */
    public ApproveDetailBo getDetailApproveByUId(String userId);

    /**
     * 性别统计
     * @return
     */
    public List<AnaBoTwo> getAnaSex();
    public List<UserDetailBo> getAllUser();
}
